<?php

class PermisosController extends AppController {
    var $name = 'Permisos';
    var $uses = array('Material', 'Usuario', 'UsuarioPunto', 'Modulo', 'ModuloOpcion', 'ModuloUsuario', 'TiendaLocal');
    var $components = array('Utilitario','Interfaz','Vista','Maestro');
    var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz');
    var $layout = "ajax";

    function beforeFilter(){
        $this->validar();
    }
    
    /*function index($busq = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->bloquear_buscador();
        $this->Vista->title("Permisos - Permisos por Usuario");
        if(isset($this->request->data)){
            extract($this->request->data);
            if(!empty($tienda_id)){
                $data=$this->UsuarioPunto->find('all',array('fields'=>array('UsuarioPunto.usuario_id'),'conditions'=>array('UsuarioPunto.estatus'=>1,'UsuarioPunto.punto_id'=>$tienda_id)));
            }else{
                $data=$this->UsuarioPunto->find('all',array('fields'=>array('UsuarioPunto.usuario_id'),'conditions'=>array('UsuarioPunto.estatus'=>1),'group'=>'UsuarioPunto.usuario_id'));
            }
            $condiciones=array();
            $ids=array();
            $ids[]=0;
            foreach ($data as $valor) {
                $ids[]=$valor['UsuarioPunto']['usuario_id'];
            }
            $condiciones['Usuario.id'] = $ids;
            if(!empty($cedula)) $condiciones['Funcionario.cedula ilike '] = "%$cedula%";
            if(!empty($nombre)) $condiciones['Funcionario.nombre ilike '] = "$nombre%";
            if(!empty($usuario)) $condiciones['Usuario.usuario ilike '] = "$usuario%";
            
            $data=$this->Usuario->find('all',array(
                'fields'=>array('Usuario.id', 'Usuario.usuario', 'Funcionario.nombre', 'Funcionario.apellido', 'Funcionario.cedula', 'Funcionario.fecha_nacimiento', 'Funcionario.sexo', 'Funcionario.correo', 'Funcionario.celular', 'Funcionario.ficha'),
                'conditions'=>$condiciones,'order' => 'Funcionario.nombre, Funcionario.apellido, Funcionario.cedula'));
        
            if (isset($vent_filtro) && count($data) > 0)
                $this->Vista->cerrar_ventana($vent_filtro);
        }
        else{
            $ids=array();
            $ids[]=0;
            $data=$this->UsuarioPunto->find('all',array('fields'=>array('UsuarioPunto.usuario_id'),'conditions'=>array('UsuarioPunto.estatus'=>1),'group'=>'UsuarioPunto.usuario_id'));
            foreach ($data as $valor) {
                $ids[]=$valor['UsuarioPunto']['usuario_id'];
            }
            $data=$this->Usuario->find('all',array(
                'fields'=>array('Usuario.id', 'Usuario.usuario', 'Funcionario.nombre', 'Funcionario.apellido', 'Funcionario.cedula', 'Funcionario.fecha_nacimiento', 'Funcionario.sexo', 'Funcionario.correo', 'Funcionario.celular', 'Funcionario.ficha'),
                'conditions'=>array('Usuario.id' => $ids,'Usuario.estatus' => 1),'order' => 'Funcionario.nombre, Funcionario.apellido, Funcionario.cedula'));
        }
        
        $this->set('data', $data);
        $this->set('busq', $busq);
    }
   
    public function filtro() {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA    
        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendas = $this->Maestro->listar_tienda_usuarios($tiendas);
        $this->set('listaTiendas', $listaTiendas);
    }
    */

    public function copiar($tiendaOrigen = '', $usuarioOrigen = '') {

        $formulario = 'mal';

        if(!empty($tiendaOrigen) and !empty($usuarioOrigen)) {

            $formulario = 'bien';
            
            $this->set('usuarioOrigen', $this->Interfaz->id($usuarioOrigen));
            $this->set('tiendaOrigen', $tiendaOrigen);
        }

        $this->set('formulario', $formulario);
    }

    public function copiar_permisos() {

        $datos = $this->request->data;

        if(!empty($datos['usuarioOrigen']) and !empty($datos['tiendaOrigen']) and !empty($datos['usuarioDestino']) and !empty($datos['tiendasDestino'])) {

            $idUsuarioDestino = $this->Interfaz->id($datos['usuarioDestino']);

            $error = 0;

            $this->Material->query('BEGIN  WORK');

            for ($i = 0; $i < count($datos['tiendasDestino']); $i++) {

                if($datos['usuarioOrigen'] == $idUsuarioDestino and $datos['tiendaOrigen'] == $datos['tiendasDestino'][$i]) {
                }
                else {
                    $info = $this->Material->query("select fnc_copiar_permisos(" . $datos['usuarioOrigen'] . ", " . $datos['tiendaOrigen'] . ", " . $idUsuarioDestino . ", " . $datos['tiendasDestino'][$i] . ")");

                   $error += $info[0][0]['fnc_copiar_permisos'];
                }
            }

            if($error > 0) {
                $this->Material->query('COMMIT');
                $this->Vista->mensaje('Se han copiado los permisos Correctamente!', 'Exito');                
            }
            else {
                $this->Material->query('ROLLBACK');
                $this->Vista->mensaje('Se ha producido un error, por favor intente denuevo', 'Error');
            }
        }
        else {
            $this->Vista->mensaje('Debe completar todos los pasos antes de ejecutar esta opcion!', 'Error');
        }

        $this->render('../Tp/mensajes');
    }

    public function ver($id_usu){
        $id_usuario = $this->Interfaz->id($id_usu);
        $data=$this->Usuario->find('first',array(
                'fields'=>array('Usuario.id', 'Usuario.usuario', 'Funcionario.nombre', 'Funcionario.apellido'),
                'conditions'=>array('Usuario.id' => $id_usuario)));
       
        $tie=$this->UsuarioPunto->find('all',array('fields'=>array('UsuarioPunto.punto_id'),'conditions'=>array('UsuarioPunto.estatus'=>1, 'UsuarioPunto.usuario_id'=> $id_usuario)));
        foreach ($tie as $valor) {
            $ids[]=$valor['UsuarioPunto']['punto_id'];
        }
        $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
        $listaTiendas = $this->TiendaLocal->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id' => $ids, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));
        
        $modulos = $this->Modulo->find('list',array(
            'fields'=>array('Modulo.id', 'Modulo.nombre'),
            'conditions'=>array('Modulo.estatus'=>1)));
        $this->set('modulos', $modulos);
        $this->set('listaTiendas', $listaTiendas);
        $this->set('data', $data);
    }

    public function buscar_usuario($dato) {

        $usuarioBusqueda = $this->Usuario->find(
            'all',array(
                'fields'=>array('Usuario.id', 'Usuario.usuario', 'Funcionario.nombre', 'Funcionario.apellido'),
                'conditions'=>array('Usuario.estatus' => 1, 'Usuario.usuario ILIKE'=> "%$dato%")));
        
        $this->set('usuarioBusqueda', $usuarioBusqueda);
    }

    public function select_copiar($usuarioDestino, $tiendaOrigen, $idUsuarioOrigen) {

        $idUsuarioDestino = $this->Interfaz->id($usuarioDestino);

        $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
        $laTienda = $this->TiendaLocal->find('first', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id' => $tiendaOrigen, 'TiendaLocal.estatus' => 1)));

        $usuarioDestino = $this->Usuario->find(
            'all',array(
                'fields'=>array('Usuario.id', 'Usuario.usuario', 'Funcionario.nombre', 'Funcionario.apellido'),
                'conditions'=>array('Usuario.estatus' => 1, 'Usuario.id'=> $idUsuarioDestino)));

        $tie=$this->UsuarioPunto->find('all',array('fields'=>array('UsuarioPunto.punto_id'),'conditions'=>array('UsuarioPunto.estatus'=>1, 'UsuarioPunto.usuario_id'=> $idUsuarioDestino)));
        foreach ($tie as $valor) {
            $ids[]=$valor['UsuarioPunto']['punto_id'];
        }
        $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
        $tiendasDestino = $this->TiendaLocal->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id' => $ids, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));

        if($idUsuarioDestino == $idUsuarioOrigen) {
            unset($tiendasDestino[$tiendaOrigen]);
        }

        $this->set('tiendasDestino', $tiendasDestino);
        $this->set('laTienda', $laTienda);
        $this->set('usuarioDestino', $usuarioDestino);
    }

    function listado_permiso_usuario(){
        extract($this->request->data);
        if(empty($modulo_id) || empty($tienda_id)){
            $this->Vista->mensaje('Debes Seleccionar la Tienda y el Modulo', 'Error');
            $this->render('../Tp/mensajes');
        }
        else{
            $usuario_id = $this->Interfaz->id($usuario_id);
            $modulos = $this->ModuloOpcion->find('all',array(
            'fields'=>array('ModuloOpcion.id','ModuloOpcion.accion','ModuloOpcion.nombre'),
            'conditions'=>array('ModuloOpcion.modulo_id' => $modulo_id)
            ));
            $permisos= $this->ModuloUsuario->find('list',array(
                'fields'=>array('ModuloUsuario.modulo_opcion_id', 'ModuloUsuario.id'),
                'conditions'=>array('ModuloUsuario.usuario_id' => $usuario_id, 'ModuloUsuario.tienda_id' => $tienda_id)
                ));
            $this->set('modulos',$modulos);
            $this->set('permisos',$permisos);
            $this->set('modulo_id',$modulo_id);
            $this->set('tienda_id',$tienda_id);
            $this->set('usuario_id',$usuario_id);
        }
    }
    
    function procesar($diveve=null, $tienda_id=null ,$usuario_id=null ,$mod_opc_id=null ,$id_permiso=null ){
        if(isset($diveve) &&isset($tienda_id) && isset($usuario_id) && isset($mod_opc_id) && isset($id_permiso) ){
            $permisos= $this->ModuloUsuario->find('first',array(
                'fields'=>array('ModuloUsuario.id'),
                'conditions'=>array(
                    'ModuloUsuario.modulo_opcion_id' =>  $this->Interfaz->id($mod_opc_id),
                    'ModuloUsuario.usuario_id' =>  $this->Interfaz->id($usuario_id), 
                    'ModuloUsuario.tienda_id' => $tienda_id)
                ));
            if(isset($permisos['ModuloUsuario']['id']) && $permisos['ModuloUsuario']['id'] > 0){
                //elimino permiso
                $this->ModuloUsuario->delete($permisos['ModuloUsuario']['id']);
                $id_permiso = 0;
                $this->Vista->mensaje('Permiso Eliminado exitoxamente!!!', 'Exito');
            }else{
                //creo permiso
                $dat['ModuloUsuario']['modulo_opcion_id']= $this->Interfaz->id($mod_opc_id);
                $dat['ModuloUsuario']['usuario_id']= $this->Interfaz->id($usuario_id);
                $dat['ModuloUsuario']['tienda_id']= $tienda_id;
                if($this->ModuloUsuario->save($dat)){
                    $id_permiso = $this->ModuloUsuario->id;
                    $this->Vista->mensaje('Permiso Asignado exitoxamente!!!', 'Exito');
                }else{
                    $this->Vista->mensaje('Ocurrio un Error Asignado exitoxamente!!!', 'Error');
                }
            }
            $modulos = $this->ModuloOpcion->find('first',array(
            'fields'=>array('ModuloOpcion.id','ModuloOpcion.accion','ModuloOpcion.nombre'),
            'conditions'=>array('ModuloOpcion.id' => $this->Interfaz->id($mod_opc_id))
            ));
            $this->set('diveve',$diveve);
            $this->set('tienda_id',$tienda_id);
            $this->set('usuario_id',$usuario_id);
            $this->set('mod_opc_id',$mod_opc_id);
            $this->set('id_permiso',$id_permiso);
            $this->set('modulos',$modulos);
        }else{
            $this->Vista->mensaje('Parametros incompletos por favor vuelva a intentar!!!', 'Error');
            $this->render('../Tp/mensajes');
        }
    }
}
?>